package com.yunxi.dao.otd;

import com.yunxi.core.dao.BaseMapperPlus;
import com.yunxi.model.otd.OtdProduceCapacity;
import com.yunxi.model.otd.OtdProduceCapacityDTO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 产能设置 Mapper 接口
 * </p>
 *
 * @author XUQI
 * @since 2019-08-26
 */
public interface OtdProduceCapacityMapper extends BaseMapperPlus<OtdProduceCapacity> {

    /**
     * 产能设置查询
     *
     * @param map 查询条件
     * @return ApiResult
     */
    List<Map<String, Object>> selectProduceCapacity(Map<String, Object> map);

    /**
     * 产能设置查询(总行数)
     *
     * @param map 查询条件
     * @return ApiResult
     */
    int selectProduceCapacityCount(Map<String, Object> map);

    /**
     * 根据年月删除产能设置
     *
     * @param yearMonth 年月
     */
    void deleteProduceCapacity(String yearMonth);

    /**
     * 根据范围查询工作日产能
     *
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 产能
     */
    List<OtdProduceCapacityDTO> selectWorkDayCapacity(@Param("startDate") Date startDate,
        @Param("endDate") Date endDate);


    /**
     *  根据年月、工厂、表达式修改状态和优先级
     * @param yearMonth 年月
     * @param expression 表达式
     * @param works 工厂
     * @param state 状态
     * @param priority 优先级
     */
    void updatePriorityAndState(@Param("yearMonth") String yearMonth, @Param("expression") String expression,
        @Param("works") String works, @Param("state") String state, @Param("priority") Integer priority);

}
